![Mountpoint for Amazon S3 を利用したファイルシステムで、タイムスタンプを変更せずにファイルのコピーを行うことはできますか](https://devio2023-media.developers.io/wp-content/uploads/2023/08/amazon-s3.png)
Mountpoint for Amazon S3 を利用したファイルシステムで、タイムスタンプを変更せずにファイルのコピーを行うことはできますか
困っていること
S3 バケット を EC2 上のフォルダ ●●●●● に対して Mountpoint for Amazon S3 を利用してマウントしています。
マウントしたフォルダに対して "cp"
コマンドでデータをコピーするとタイムスタンプと所有者が保持できません。保持する方法があれば教えてください。
どう対応すればいいの?
タイムスタンプ (Last-Modified)
Mountpoint for Amazon S3 を利用したファイルシステムにおいて、タイムスタンプ (Last-Modified) を変更せずにファイルのコピーを行うことは叶いません。
システムで定義されたオブジェクトメタデータのうち Last-Modified については、Amazon S3 だけがその値を変更することが可能であり、ご自身でその値を変更することができない仕様です。
所有者
所有者においてもファイル・ディレクトリで統一された所有者以外に設定することはできません。Mountpoint for Amazon S3 では、全てのファイルやディレクトリにデフォルトの owners を割り当て、これは "chmod"
や "chown"
より変更することができない仕様です。
そのため、"touch"
コマンド, "chown"
コマンド等によるメタデータの編集は有効な代替案になり得ません。
なお、デフォルトの owners を書き換えることや、ファイルやディレクトリの権限につきましては、マウント時のコマンドのオプション "--uid"
, "--gid"
, "--file-mode"
, "--dir-mode"
を指定することにより実現可能です。
Mountpoint assigns default permissions (modes) and owners to all files and directories, and these cannot be changed with commands like chmod and chown once the bucket is mounted. You can use the --uid, --gid, --file-mode, and --dir-mode flags at startup time to override these defaults. (略) Mountpoint has limited support for other file and directory metadata, including file modification times and sizes, and you cannot modify this metadata.
代替案
Amazon S3 ファイルゲートウェイ
ご要件によるものの、Amazon S3 ファイルゲートウェイ をご検討ください。 こちらにおいてもタイムスタンプの編集は出来かねますが、ファイルの所有者を変更することが可能です。
クライアントでは、ファイルおよびディレクトリの作成、読み込み、更新、削除を実行できます。 クライアントは、ファイルとフォルダのアクセス許可と所有権を変更することもできます。
ユーザー定義のメタデータ
システム定義のメタデータは仕様により編集は叶わないものの、ユーザー定義のメタデータにタイムスタンプ値を保持可能なので併せてご検討ください。
参考資料
- Mountpoint for Amazon S3 の使用 - Amazon Simple Storage Service
- オブジェクトメタデータの使用 - システムで定義されたオブジェクトメタデータ
- mountpoint-s3/doc/SEMANTICS.md at main · awslabs/mountpoint-s3 · GitHub
- Amazon S3 ファイルゲートウェイとは
- よくある質問 - AWS Storage Gateway |AWS
- Amazon S3 バケット内オブジェクトの上書きコピー後、タイムスタンプが変更されない方法を教えてください | DevelopersIO
- [アップデート] Mountpoint for Amazon S3 が GA されました。 | DevelopersIO